package com.kevin.thread.ticketWindow;

/**
 * @Description 模拟营业厅叫号程序-继承Thread
 * @Author Kevin
 * @Date: Created in  15:18 2019/9/10:
 * @Modified By:
 * @Email: tang.lx@topcheer.com
 */
public class TicketWindowThread extends Thread{
    // 柜台名称
    private final String name;

    // 最多受理50笔业务
    private static final int MAX = 50;
    // static 的生命周期很长
    // 用 static 修饰可以实现资源共享，但是当 MAX 很大时还是会出现线程安全问题，
    // 而且如果共享资源很多，需要复杂计算的时候，就不能用static了，那怎么办呢
    // 解决方案就是 runnable , 将线程控制 和 业务逻辑 彻底分离了开来
    private static int index = 1;

    public TicketWindowThread(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        while (index <= MAX) {
            System.out.println("柜台：" + name + ";当前的号码是：" + (index++));
        }
    }

    public static void main(String[] args) {
        for (int i=0;i<4;i++){
            new TicketWindowThread("ticketWindow_"+i).start();
        }
    }
}
